/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DTO.LoaiDaiLyDTO;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author HuuTri
 * Tương tác data với bảng LoaiDaiLy
 */
public class LoaiDaiLyDAO {
    static String PROC_INSERT = "spLoaiDaiLyInsert";
    static String PROC_DELETE = "spLoaiDaiLyDelete";
    static String PROC_UPDATE = "spLoaiDaiLyUpdate";
    static String PROC_SELECT_ALL = "spLoaiDaiLySelectAll";
    static String PROC_SELECT_ALL_MALOAIDAILY = "spLoaiDaiLyGetAllMa";
    static String PROC_CHECK_MA = "spLoaiDaiLyCheckMaLoaiDaiLy";
    
    /**
     * check maloaidaily 
     * @param loaidaily
     * @return 
     */
    public static boolean checkMaLoaiDaiLy(LoaiDaiLyDTO loaidaily) {
        DefaultTableModel tableModel;
        tableModel = SQLHelperDAO.execQuery(PROC_CHECK_MA, 
                                            getListParams(loaidaily)
                                            );
        return (tableModel.getRowCount() <= 0);
    }
    /**
     * get new MaLoaiDaiLy
     * @return 
     */
    public static int getNewMaLoaiDaiLy() {
        return MaSoDAO.getMaSo(LoaiDaiLyDTO.TABLE);
    }
    
    public static List<String> getListMaLoaiDaiLy() {
        List<String> res = new ArrayList<>();
        int row = 0;
        
        DefaultTableModel tableModel = SQLHelperDAO.execQuery(PROC_SELECT_ALL_MALOAIDAILY, null);
        row = tableModel.getRowCount();
        for (int i = 0; i < row; i++) {
            res.add(tableModel.getValueAt(i, 0).toString());
        }
        
        return res;
    }
    
    /*Thêm vào loại đại lý*/
    public static boolean insert(LoaiDaiLyDTO loaidaily) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_INSERT, getListParams(loaidaily));
            MaSoDAO.updateMaSo(LoaiDaiLyDTO.TABLE);
        }   catch(Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Xóa một loại đại lý*/
    public static boolean delete(LoaiDaiLyDTO loaidaily) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_DELETE, getListParams(loaidaily));
        } catch (Exception ex) {
            res = false;
        }
        
        return true;
    }
    
    /*cập nhật loại đại lý dựa vào mã loại đại lý*/
    public static boolean update(LoaiDaiLyDTO loaidaily) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_UPDATE, getListParams(loaidaily));
        } catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Lấy tất cả Loại đại lý*/
    public static DefaultTableModel getTableModel() {
        return SQLHelperDAO.execQuery(PROC_SELECT_ALL, null);
    }
    
    /*Lấy danh sách tham số từ đối tượng loại đại lý*/
    private static List<Parameter> getListParams(LoaiDaiLyDTO loaidaily) {
        List<Parameter> listParams = new ArrayList<>();
        
        listParams.add(new Parameter(LoaiDaiLyDTO.ID, loaidaily.getId()));
        listParams.add(new Parameter(LoaiDaiLyDTO.MA_LOAI_DAI_LY, loaidaily.getMaLoaiDaiLy()));
        listParams.add(new Parameter(LoaiDaiLyDTO.TEN_LOAI_DAI_LY, loaidaily.getTenLoaiDaiLy()));
        listParams.add(new Parameter(LoaiDaiLyDTO.MO_TA, loaidaily.getMoTa()));
        
        return listParams;
    }
}
